package cn.tedu.category.dao.persist.repository;


import cn.tedu.category.pojo.entity.Category;
import cn.tedu.category.pojo.vo.CategoryListItemVO;
import cn.tedu.category.pojo.vo.CategoryStandardVO;
import cn.tedu.common.pojo.vo.PageData;

public interface ICategoryRepository {
    //新增类别
    int insert(Category category);

    /**
     * 根据id删除类别数据
     *
     * @param id 类别ID
     * @return 受影响的行数
     */
    int deleteById(Long id);

    //修改类别
    int updateById(Category category);

    //根据ID查询类别数据详情
    CategoryStandardVO getStandardById(Long id);

    //分页查询
    PageData<CategoryListItemVO> listByParent(Integer pageNum, Integer pageSize);

    int countByName(String name);

    /**
     * 根据父级类别，统计其子级类别的数量
     *
     * @param parentId 父级类别的ID
     * @return 此类别的子级类别的数量
     */
    int countByParent(Long parentId);

    /**
     * 统计当前表中非此类别id的匹配名称的类别数据的数量
     *
     * @param id   当前类别ID
     * @param name 类别名称
     * @return 当前表中非此类别id的匹配名称的类别数据的数量
     */
    int countByNameAndNotId(Long id, String name);
}
